Go语言使用gorm对MySQL进行性能测试 您所在的位置:网站首页 go 内存使用 Go语言使用gorm对MySQL进行性能测试

Go语言使用gorm对MySQL进行性能测试

2023-04-08 21:02| 来源: 网络整理| 查看: 265

之前写过了Go语言gorm框架MySQL实践,其中对gorm框架在操作MySQL的各种基础实践,下面分享一下如何使用gorm框架对MySQL直接进行性能测试的简单实践。

这里我使用了一个原始的Go语言版本的 FunTester 测试框架,现在只有一个基本的方法,实在是因为Go语言特性太强了。框架设计的主要思路之一就是利用Go语言的闭包和方法参数特性,将一个 func() 当做性能测试的主题,通过不断运行这个 func() 来实现性能测试。当然还有另外一个思路就是运行一个多线程任务类,类似 Java 版本的 com.funtester.base.constaint.ThreadBase 抽象类,这样可以设置一些类的属性,绑定一些测试资源,适配更多的测试场景。

下面演示select的性能测试,这里我用了随机ID查询的场景。

这里我使用从35开始递增的ID进行删除。

这里使用了select的用例部分,随机ID,然后更新name字段,随机10个长度的字符串。

这里用到了 FunTester 字段都是随机生成。

到这里可以看出,性能测试框架用到的都是gorm框架的基础API使用,这里MySQL连接池的管理工作完全交给了gorm框架完成,看资料说非常牛逼,我们只需要设置几个参数。这个使用体现很像 HttpClient 设置 HTTP 连接池类似,这里我们也可以看出这些优秀的框架使用起来都是非常简单的。

PS:关于gorm的基础使用的请参考上一期的文章Go语言gorm框架MySQL实践。

最近在学习golang, 使用gin框架搭了个网站,于是在网上找golang的orm

找到gorm使用了两天突然发现v2已经发布了,看更新日志说提高了性能修复了很多bug,于是赶紧换了v2,以下纪录我使用gorm v2 踩过的坑

我使用gorm连接的是mysql, 在使用automigrate根据关系模型创建表的时候总是创建失败

首先看官方文档,简单的关联关系,其实理解了官方案例问题就不大.

但是在复杂关系的时候创建就会报错(无法添加外键约束等).这里我提供我自己实验出的一种解决方式:

以我自己的项目为例,假设有User(用户),House(房间),Order(订单)三个表, 无关的属性已经去掉

pretype User struct {

gorm.Model // gorm自带, 会提供ID, craeteAt, updateAt, deleteAt四个属性

Property1 int

Property2 string

}

type House struct {

gorm.Model

Property1 int

Property2 string

}

type Order struct {

gorm.Model

Property1 int

Property2 string

精简了很多属性和关联不知道还会不会报错.

创建的时候先屏蔽所有的外键关系然后创建表, 注释之后如下

pretype User struct {

gorm.Model // gorm自带, 会提供ID, craeteAt, updateAt, deleteAt四个属性

Property1 int

Property2 string

}

type House struct {

gorm.Model

Property1 int

Property2 string

}

type Order struct {

gorm.Model

Property1 int

Property2 string

相当于每个表都只剩下了gorm.Model和两个Property, 请注意在Order表中我注释掉了UserID,HouseID

因为这两个属性虽然是基础类型属性,但是UserID是user表的外键, HouseID是下面House表的外键, 所以说这两个属性也要注释掉

然后你就可以执行db.AutoMigrate(User{},House{},Order{}) 来自动迁移创建你的表

创建完成之后放开User表的Houses和House表的Tenants, 然后再次执行自动迁移, 就可以创建users表和houses表的多对多关联表

然后再放开Order的HouseID 和House, 就可以创建orders表对houses表的一对一关系约束

最后放开User的Orders和Order的UserID, 就可以创建users表对orders表的一对多关系约束

这样分步创建就不会报错,如果报错的话请检查你的模型是否有问题, 多参考官方给出的案例

还有官网给出的项目 gin-vue-admin 也可以参考

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/zaji/7374891.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有